package com.yida.gwj.scene.expend.service;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.alibaba.fastjson2.JSONObject;
import com.yida.gwj.scene.expend.domain.GwjSceneExpendBusinessHouseAndOwner;
import com.yida.gwj.scene.expend.domain.request.GwjSceneExpendBusinessRequest;
import com.yida.gwj.scene.expend.domain.request.GwjSceneExpendHouseAndOwnerRequest;
import com.yida.gwj.scene.expend.domain.request.GwjSceneExpendShareEquallyMoneyRequest;
import com.yida.gwj.scene.expend.domain.request.GwjSceneExpendSubmitRequest;

/**
 * @author Administrator
 * @date 2023/08/14
 */
public interface GwjSceneExpendBusinessMainService {

    /**
     * 保存业务信息（保存按钮操作）
     * 
     * @param gwjSceneExpendBusinessRequest
     * @return
     */
    public boolean saveBusiness(GwjSceneExpendBusinessRequest gwjSceneExpendBusinessRequest);

    /**
     * 查询业务信息详情
     * 
     * @param bizId
     * @param areaId
     * @return
     */
    public JSONObject selectBusiness(Long bizId, Long areaId);

    /**
     * 保存业务及工程信息(已有业务保存操作)
     * 
     * @param gwjSceneExpendBusinessRequest 业务信息请求
     * @return
     */
    public boolean editBusiness(GwjSceneExpendBusinessRequest gwjSceneExpendBusinessRequest);

    /**
     * 业务信息提交（提交按钮操作）
     * 
     * 业务步骤校验
     * 
     * @param gwjSceneExpendSubmitRequest 业务信息提交请求
     * @return
     */
    public boolean submitBusiness(GwjSceneExpendSubmitRequest gwjSceneExpendSubmitRequest);

    /**
     * 业务信息回退（回退按钮操作）
     * 
     * 业务步骤校验
     * 
     * @param gwjSceneExpendSubmitRequest
     * @return
     */
    public boolean returnBusiness(GwjSceneExpendSubmitRequest gwjSceneExpendSubmitRequest);

    /**
     * 删除业务信息
     * 
     * @param gwjSceneExpendSubmitRequest
     * @return
     */
    public boolean deleteBusiness(GwjSceneExpendSubmitRequest gwjSceneExpendSubmitRequest);

    /**
     * 财务对账
     * 
     * 业务步骤校验
     * 
     * @param bizId 业务ID
     * @param areaId 地区ID
     * @return
     */
    public boolean financeCheck(Long bizId, Long areaId);

    /**
     * 按计算标准分摊金额
     * 
     * @param gsesemr 计算标准请求类
     * @return
     */
    public boolean shareEquallyMoney(GwjSceneExpendShareEquallyMoneyRequest gwjSceneExpendShareEquallyMoneyRequest);

    /**
     * 获取选中房屋类型
     * 
     * @param bizId 业务ID
     * @return
     */
    public List<String> selectHouseUseType(Long bizId);

    /**
     * 检查业主信息
     * 
     * @param gwjHouseAndOwnerRequest
     * @return
     */
    public boolean checkOwnerInfo(Long bizId);

    /**
     * 变更操作员
     * 
     * @param gwjSceneExpendSubmitRequest
     * @return
     */
    public boolean changeOper(GwjSceneExpendSubmitRequest gwjSceneExpendSubmitRequest);

    /**
     * 签署意见
     * 
     * @param gwjSceneExpendSubmitRequest
     * @return
     */
    public boolean signContent(GwjSceneExpendSubmitRequest gwjSceneExpendSubmitRequest);

    /**
     * 获取步骤配置信息
     * 
     * @return
     */
    public JSONObject stepInfo();

    /**
     * 202300906
     *
     * 业务房屋导入
     *
     * @param allocatedAmountRequest
     * @return
     */
    String importHouseList(MultipartFile file, boolean updateSupport, Long bizId) throws Exception;

    /**
     * 20230906
     * 
     * 业务房屋导出
     * 
     * @param gwjSceneExpendHouseAndOwnerRequest
     * @return
     */
    List<GwjSceneExpendBusinessHouseAndOwner> exportHouseList(GwjSceneExpendHouseAndOwnerRequest gwjSceneExpendHouseAndOwnerRequest);
}
